package cn.com.dcsgo.service;

import cn.com.dcsgo.domain.Category;
import cn.com.dcsgo.dto.CategoryAddDTO;
import cn.com.dcsgo.dto.CategoryUpdateDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 针对表【category(产品类目)】的数据库操作Service
 *
 * @author Dcsgo
 * @since 2025-10-14 08:45:29
 */
public interface CategoryService extends IService<Category> {

    /**
     * 获取所有产品分类信息
     *
     * @return 所有产品分类信息（不具有层级关系，按父分类ID和排序数升序排序）
     */
    List<Category> getOrderedCategoryTable();

    /**
     * 获取所有正常分类信息
     * @return 所有分类信息，不具有层级关系，数据状态为正常，按父分类ID和排序数升序排序
     */
    List<Category> getOrderedNormalCategoryList();

    /**
     * 新增分类
     * @param categoryAddDTO 新增类信息
     * @return true-新增成功，false-新增失败
     */

    boolean addCategory(CategoryAddDTO categoryAddDTO);

    /**
     * 更新分类信息
     * @param categoryUpdateDTO 更新分类信息参数
     * @return true-更新成功，false-更新失败
     */
    boolean updateById(CategoryUpdateDTO categoryUpdateDTO);

    /**
     * 删除分类，有子分类的，状态不为下线的不允许删除
     * @param categoryId 分类ID
     * @return true-删除成功，false-删除失败
     */
    boolean carefulRemoveById(Long categoryId);
}
